package com.scrx.ymg.service.orderform;

import java.util.List;
import java.util.Map;

import com.scrx.ymg.entity.Address;
import com.scrx.ymg.entity.OrderForm;
import com.scrx.ymg.entity.OrderFormDetails;
import com.scrx.ymg.entity.OrderReturn;
import com.scrx.ymg.entity.ProductEvaluate;
import com.scrx.ymg.entity.SuperMarketEntrepot;
import com.scrx.ymg.entity.SuperMarketInfo;
import com.scrx.ymg.entity.User;
import com.scrx.ymg.entity.UserComplain;

public interface IOrderFormService {
	
	
	/**
	 * 创建购物订单
	 * @param user 消费者
	 * @param superinfo 超市
	 * @param add 地址
	 * @param shipping_fee 配送费
	 * @param totalMoney 总金额
	 * @param paymentType 支付方式
	 * @param entrepots 购买商品集合
	 * @return 订单
	 */
	public String createOrderForm(User user,SuperMarketInfo superinfo,Address add
			,double shipping_fee,double totalMoney,int paymentType,List<OrderFormDetails> entrepots,int status);
	/**
	 * 创建购物订单
	 * @param user 消费者
	 * @param superinfo 超市
	 * @param add 地址
	 * @param shipping_fee 配送费
	 * @param totalMoney 总金额
	 * @param paymentType 支付方式
	 * @param entrepots 购买商品集合
	 * @param status 状态
	 * @return 订单
	 */
	public String createOrderFormWX(User user, SuperMarketInfo superinfo,Address add,
		    double shippingFee,double totalMoney,int paymentType,List<OrderFormDetails> details,int status);
	/**
	 * 根据状态分组查询订单头数量
	 * @return 订单
	 */
	public List<OrderForm> getOrderFormGroupStatus(String userID);
	
	/**
	 * 根据用户查询对应状态的订单详情
	 * @param userid 用户id
	 * @param status 订单状态
	 * @return json 对应订单
	 */
	public List getOrderFormByStatus(String userid,String status);
	/**
	 * 根据用户查询对应状态的订单详情
	 * @param userid 用户id
	 * @return json 对应订单
	 */
	public List getOrderFormByUserID(String userid);
	
	/**
	 * 用户确认收货
	 * @param userID
	 * @param orderFormID  订单头ID
	 * @return
	 */
	public String takeDeliveryOfGoods(String userID,int ID);
	
	/**
	 * 超市后台发货
	 * @param superID
	 * @param orderFormID
	 * @return
	 */
	public String TheSupermarketDelivery(String orderFormID,String trackingNum);

	/**
	 * 根据超市id查询所属状态订单
	 * @param superID 用户ID
	 * @param status 订单状态
	 * @return json 对应订单
	 */
	public List<OrderForm> getOrderFormBySuperID(String userID, String status);

    /**
     * 发货页面查询订单
     * @param superId
     * @param status
     * @param userName
     * @param phone
     * @param orderFormId
     * @return
     */
	public Map<Object, Object> getOrderFormBySuper(OrderForm orderform,String startTime,String endTime,int pageNum,int pageCount);
    
    /**
     * 发货页面查询订单
     * @param superId
     * @param status
     * @param userName
     * @param phone
     * @param orderFormId
     * @return
     */
	public Map<Object, Object> getOrderFormBySuper(OrderForm orderform,int pageNum,int pageCount);
    /**
     * 消费者取消订单
     * @param order
     * @return 是否成功
     */
	public String cancelOrderForm(OrderForm order);

    /**
     * 消费者退货
     * @param order
     * @return
     */
	public String returnsOrderForm(OrderForm order);

    /**
     * 消费者评价
     * @param order
     * @return
     */
	public String evaluateOrderForm(int orderId,int userId,ProductEvaluate peva);

    /**
     * 消费者投诉
     * @param order
     * @return
     */
	public String complaintOrderForm(OrderForm order,UserComplain com);

    /**
     * 消费者催单
     * @param superID
     * @return
     */
	public String reminder(int superID);

     /**
      * 查询消费者退货订单
      * @param order
      * @return
      */
	public Map<Object, Object> getUserReturn(OrderReturn order,int pageCount,int pageNum);

    /**
     * 超市处理退货请求
     * @param orderFormID
     * @return
     */
	public String disposeReturn(String orderFormID);

     /**
      * 根据订单id查询订单详情
      * @param orderFormId
      * @return
      */
	public List<OrderFormDetails> getOrderFormDetailsByOrderFormID(String orderFormId);
	
	/**
	 * 根据订单id查询订单
	 * @param orderId
	 * @return
	 */
	public OrderForm getOrderFormByOrderId(String orderId);
	
	public OrderForm getOrderFormById(int Id);
	
	/**
	 * 更新订单
	 * @param order
	 * @return
	 */
	public String updateOrderForm(OrderForm order);
	/**
	 * +更新订单和增加平台收入!
	 * @param order
	 * @return
	 */
	public String updateOrderFormAndHeadMoney(OrderForm order);
	
	/**
	 * -取消订单,退货订单,平台退钱
	 * @param order
	 * @return
	 */
	public String returnOrderForm(OrderForm order);
	
	/**
	 * 创建直营订单
	 * @param user 消费者对象
	 * @param directId 直营商家id
	 * @param addressID 送货地址id
	 * @param totalMoney 订单总价
	 * @param details  订单商品详情
	 * @param status   订单类型 :1:-1 预支付,2:1待发货
	 * @return
	 */
	public String createDirectOrderForm(User user, String addressID,
			Double totalMoney, List<OrderFormDetails> details, int status);
	/**
	 * +更新直营订单和增加平台收入!
	 * @param order
	 * @return
	 */
	public String updateDirectOrderFormAndHeadMoney(OrderForm order);
	
	/**
	 * 在线支付退货
	 * @param transferNo
	 * @return
	 */
	public String returnTransferPay(String transferNo);
	
	/**
	 * 更新订单状态并发送商家下单信息
	 * @param order
	 * @return
	 */
	public String updateOrderFormSendMessage(OrderForm order);
	public String createDirectOrderFormNew(User user, String addressID, Double totalMoney,
			List<OrderFormDetails> details, int i);
	
	/**
	 * 确认收货增加上级佣金
	 * @param ID
	 * @return
	 */
	public String directTakeDeliveryYongJin(int ID);

}
